#ifndef __DCLELINKLIST_H_
#define __DCLINKLIST_H_

#define ElementType int 
struct Node
{
    ElementType data;
    struct Node *next;
    struct Node *prev;
};
struct DoubleCircleLinkList
{
    struct Node *head;
    struct Node *tail;
    int len;
};

typedef struct DoubleCircleLinkList DCLlist;
int InitDCLinkList(DCLlist *list);
void InsertTail(DCLlist *list,ElementType element);
void Travel(DCLlist *list);
void FreeDLinklist(DCLlist *list);
void InsertHead(DCLlist *list,ElementType element);
void InsertIndex(DCLlist *list,ElementType element,int index);
void RemoveByIndex(DCLlist *list,int index);
void RemoveByElement(DCLlist *list,ElementType element);
int FindFirstByElement(DCLlist *list,ElementType element);

#endif